home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung (Tewi)(1994).iso / magazine / nan_news / toolkit / reboot.asm < prev    next >
Assembly Source File  |  1991-08-15  |  3KB  |  89 lines

  1. ; File......: REBOOT.ASM
  2. ; Author....: Ted Means
  3. ; Date......: $Date:   15 Aug 1991 23:08:04  $
  4. ; Revision..: $Revision:   1.2  $
  5. ; Log file..: $Logfile:   E:/nanfor/src/reboot.asv  $
  6. ; This is an original work by Ted Means and is placed in the
  7. ; public domain.
  8. ;
  9. ; Modification history:
  10. ; ---------------------
  11. ;
  12. ; $Log:   E:/nanfor/src/reboot.asv  $
  13. ;  
  14. ;     Rev 1.2   15 Aug 1991 23:08:04   GLENN
  15. ;  Forest Belt proofread/edited/cleaned up doc
  16. ;  
  17. ;     Rev 1.1   12 Jun 1991 01:28:02   GLENN
  18. ;  Added choice of warm or cold reboot.  Documentation and code change.
  19. ;  
  20. ;     Rev 1.0   01 Apr 1991 01:03:50   GLENN
  21. ;  Nanforum Toolkit
  22. ;  
  23.  
  24.  
  25.  
  26. ;  $DOC$
  27. ;  $FUNCNAME$
  28. ;      FT_REBOOT()
  29. ;  $CATEGORY$
  30. ;      DOS/BIOS
  31. ;  $ONELINER$
  32. ;      Force a warm or cold boot
  33. ;  $SYNTAX$
  34. ;      FT_REBOOT( <nBootType> ) -> NIL
  35. ;  $ARGUMENTS$
  36. ;      <nBootType> is used to indicate the type of reboot.  A value of zero
  37. ;      will cause a cold boot, while any other value will cause a warm boot.
  38. ;  $RETURNS$
  39. ;      NIL
  40. ;  $DESCRIPTION$
  41. ;      This function is valuable if you need to reboot the PC for some
  42. ;      reason; e.g. an installation routine that modifies CONFIG.SYS or
  43. ;      AUTOEXEC.BAT.
  44. ;
  45. ;      The source code is written to adhere to Turbo Assembler's IDEAL mode.
  46. ;      To use another assembler, you will need to rearrange the PROC and
  47. ;      SEGMENT directives, and also the ENDP and ENDS directives (a very
  48. ;      minor task).
  49. ;  $EXAMPLES$
  50. ;      #define COLD 0
  51. ;      #define WARM 1
  52. ;
  53. ;      // Issue a warm boot
  54. ;
  55. ;      FT_Reboot(WARM)
  56. ;
  57. ;  $END$
  58. ;
  59.  
  60.  
  61.          IDEAL
  62.  
  63. Public   FT_REBOOT
  64.  
  65. Extrn    __ParNI:Far
  66.  
  67. Segment  _NanFor   Word      Public    "CODE"
  68.          Assume    CS:_NanFor
  69.  
  70. Proc     FT_REBOOT Far
  71.  
  72.          Mov       AX,1                      ; Specify first param
  73.          Push      AX                        ; Put on stack
  74.          Call      __ParNI                   ; Get param
  75.          Xor       DX,DX                     ; Clear DX
  76.          Mov       DS,DX                     ; Set DS to low memory
  77.          Or        AX,AX                     ; Cold boot requested?         
  78.          JZ        POST                      ; If so, don't set for warm
  79.          Mov       AX,1234h                  ; Set up AX for warm boot
  80.  
  81. POST:    Mov       [Word Ptr 472h],AX        ; Indicate a warm boot
  82.          DB        0EAh                      ; JMP to POST -- this method
  83.          DD        0F000FFF0h                ; overcomes TASM bug
  84. Endp     FT_REBOOT
  85. Ends     _NanFor
  86. End
  87. 
  88.